package com.jty.lib_base.data.bean

import com.google.gson.annotations.SerializedName
import java.io.Serializable

/**
 * author: zhouyh
 * created on: 2021/5/11 5:30 下午
 * description:
 */
data class IdNameItem(
    @SerializedName("id")
    val id: Int,
    @SerializedName("name")
    val name: String,
) {}

data class CodeNameItem(
    @SerializedName("code")
    val code: String,
    @SerializedName("name")
    val name: String,
) {}


data class LoginBean(
    @SerializedName("id")
    val id: Int,
    @SerializedName("name")
    val name: String,
    @SerializedName("mobile")
    val mobile: String,
    @SerializedName("avatarUrl")
    val avatarUrl: String?,
    @SerializedName("token")
    val token: String,
)




data class TokenBean(
    @SerializedName("access_token")
    val access_token: String,
    @SerializedName("expires_in")
    val expires_in: Int,
    @SerializedName("refresh_token")
    val refresh_token: String,
    @SerializedName("token_type")
    val token_type: String,
)

/**
 * 通知数据类
 */
data class NoticeBean(
    @SerializedName("items")
    val items: List<Item>,
    @SerializedName("pageIndex")
    val pageIndex: Int,
    @SerializedName("pageSize")
    val pageSize: Int,
    @SerializedName("total")
    val total: Int,
) {
    data class Item(
        @SerializedName("content")
        val content: String,
        @SerializedName("createTime")
        val createTime: String,
        @SerializedName("haveRead")
        val haveRead: Int,  //0未读 1已读
        @SerializedName("id")
        val id: Int,
        @SerializedName("paramMap")
        val paramMap: ParamMap,
        @SerializedName("type")
        val type: Int,
        @SerializedName("typeName")
        val typeName: String,
        @SerializedName("userId")
        val userId: Int,
    ) {
        data class ParamMap(
            @SerializedName("score")
            val score: Int,
        )
    }
}

/**
 * 画像数据
 */
data class PortraitBean(
    @SerializedName("businessName")
    val businessName: String,
    @SerializedName("id")
    val id: Int,
    @SerializedName("totalScore")
    val totalScore: Int,
) : Serializable

/**
 * 业务列表数据
 */
data class PortraitAdapterBean(
    @SerializedName("businessName")
    val businessName: String,
    @SerializedName("id")
    val id: Int,
    @SerializedName("totalScore")
    val totalScore: Int,
    @SerializedName("iconId")
    val iconId: Int,
    @SerializedName("name")
    val name: String,
) : Serializable

/**
 * 能力业务详情数据
 * "avgAbilityScore":38.50
 */
data class BusinessAbilityBean(
    @SerializedName("abilityRecords")
    val abilityRecords: List<AbilityRecord>,
    @SerializedName("abilityTotalScore")
    val abilityTotalScore: Double,
    @SerializedName("avgAbilityScore")
    val avgAbilityScore: Double,
) {
    data class AbilityRecord(
        @SerializedName("abilityScore")
        val abilityScore: Int,
        @SerializedName("activityName")
        val activityName: String,
        @SerializedName("currentAbilityTotalScore")
        val currentAbilityTotalScore: Int,
        @SerializedName("fillTime")
        val fillTime: String,
    )
}

/**
 * 实绩业务数据类
 */
data class BusinessAchievementBean(
    @SerializedName("avgTangibleScore")
    val avgTangibleScore: Double,
    @SerializedName("fillRecords")
    val fillRecords: List<FillRecord>,
    @SerializedName("tangibleTotalScore")
    val tangibleTotalScore: Double,
) {
    data class FillRecord(
        @SerializedName("currentTangibleTotalScore")
        val currentTangibleTotalScore: Int,
        @SerializedName("fillTime")
        val fillTime: String,
        @SerializedName("tangibleScore")
        val tangibleScore: Int,
        @SerializedName("titleName")
        val titleName: String,
    )
}


/**
 * 教研活动列表数据
 * liveStatus 直播状态
 * 活动状态state(1.直播/2.线下/3.预告/4.回放/5.活动未进行直播)
 */
data class ResearchActivityListBean(
    @SerializedName("current")
    val current: Int,
    @SerializedName("pages")
    val pages: Int,
    @SerializedName("records")
    val records: List<Record>,
    @SerializedName("size")
    val size: Int,
    @SerializedName("total")
    val total: Int,
) {
    data class Record(
        @SerializedName("coverUrl")
        val coverUrl: String,
        @SerializedName("endTime")
        val endTime: String,
        @SerializedName("id")
        val id: Int,
        @SerializedName("liveStatus")
        val liveStatus: Int,
        @SerializedName("memberNum")
        val memberNum: Int,
        @SerializedName("name")
        val name: String,
        @SerializedName("playbackUrl")
        val playbackUrl: String,
        @SerializedName("startTime")
        val startTime: String,
        @SerializedName("state")
        val state: Int,
        @SerializedName("type")
        val type: Int,
        @SerializedName("teacherId")
        val teacherId: String,
        @SerializedName("teacherName")
        val teacherName: String,
        @SerializedName("registrationNum")
        val registrationNum: Int,
        @SerializedName("registration")
        val registration: Boolean,
    ) : Serializable
}


/**
 * 基础学年数据
 */
data class CurrentStudyYearBean(
    @SerializedName("createTime")
    val createTime: String,
    @SerializedName("enable")
    val enable: Int,
    @SerializedName("endTime")
    val endTime: String,
    @SerializedName("id")
    val id: Int,
    @SerializedName("modifyTime")
    val modifyTime: String,
    @SerializedName("name")
    val name: String,
    @SerializedName("regionId")
    val regionId: Int,
    @SerializedName("startTime")
    val startTime: String,
)


/**
 * 教研模块tab数据
 * tab标识name
 * all,my,region,tenant,platform
 * String key;
 * id 教师/学校
 * Integer id;
 * 数量Integer count;
 */
data class ResearchTabBean(
    @SerializedName("name")
    val name: String,
    @SerializedName("key")
    val key: String,
    @SerializedName("id")
    val id: Int,
    @SerializedName("count")
    val count: Int,
) : Serializable


/**
 * 教研活动详情
 * liveState直播状态，1待开始，2进行中，3已结束
 * state(1.直播/2.线下/3.预告/4.回放)
 */
data class ResearchDetailBean(
    @SerializedName("activityFiles")
    val activityFiles: List<ActivityFile>,
    @SerializedName("coverUrl")
    val coverUrl: String,
    @SerializedName("endTime")
    val endTime: String,
    @SerializedName("id")
    val id: Int,
    @SerializedName("introduce")
    val introduce: String,
    @SerializedName("name")
    val name: String,
    @SerializedName("playbackUrl")
    val playbackUrl: Any,
    @SerializedName("stageId")
    val stageId: Int,
    @SerializedName("stageName")
    val stageName: Any,
    @SerializedName("startTime")
    val startTime: String,
    @SerializedName("state")
    val state: Int,
    @SerializedName("subjectId")
    val subjectId: Int,
    @SerializedName("subjectName")
    val subjectName: Any,
    @SerializedName("teacherName")
    val teacherName: String,
    @SerializedName("teacherNoteVos")
    val teacherNoteVos: Any,
    @SerializedName("type")
    val type: Int,
    @SerializedName("registration")
    val registration: Boolean,
    @SerializedName("liveStatus")
    val liveStatus: Int,
) : Serializable {
    data class ActivityFile(
        @SerializedName("activityId")
        val activityId: Int,
        @SerializedName("name")
        val name: String,
        @SerializedName("size")
        val size: Int,
        @SerializedName("type")
        val type: String,
        @SerializedName("url")
        val url: String,
    )
}

/**
 * 直播状态
 * id 活动id
 * liveStatus 直播状态 1待开始，2进行中，3已结束
 * type 类型(1.线上直播/2.线下参与)
 * state 状态(1.直播/2.线下/3.预告/4.回放)
 */
data class LiveStateBean(
    @SerializedName("id")
    val id: Int,
    @SerializedName("liveStatus")
    val liveStatus: Int,
    @SerializedName("type")
    val type: Int,
    @SerializedName("state")
    val state: Int,
)

/**
 *
 * 教研活动报名人列表
 */
data class ResearchJoinPeopleBean(
    @SerializedName("avatarUrl")
    val avatarUrl: Any,
    @SerializedName("teacherId")
    val teacherId: Int,
    @SerializedName("teacherName")
    val teacherName: String,
    @SerializedName("gender")  //性别MALE,FEMALE
    val gender: String,
) : Serializable


/**
 * 活动笔记获取
 */
data class RoomNoteBean(
    @SerializedName("activityId")
    val activityId: Int,
    @SerializedName("createTime")
    val createTime: Any,
    @SerializedName("id")
    val id: Any,
    @SerializedName("notePage")
    val notePage: List<NotePage>,
    @SerializedName("pdfUrl")
    val pdfUrl: String,
    @SerializedName("pics")
    val pics: List<String>,
    @SerializedName("roomName")
    val roomName: Any,
    @SerializedName("teacherId")
    val teacherId: Int,
    @SerializedName("teacherName")
    val teacherName: String,
    @SerializedName("way")
    val way: String
){
    data class NotePage(
        @SerializedName("height")
        val height: Int,
        @SerializedName("pageNumber")
        val pageNumber: Int,
        @SerializedName("pageserial")
        val pageserial: String,
        @SerializedName("picture_url")
        val pictureUrl: String,
        @SerializedName("width")
        val width: Int,
        @SerializedName("bookId")
        val bookId: Int
    )
}



/**
 * 直播token数据
 */
data class RoomTokenBean(
    @SerializedName("token")
    val token: String,
    @SerializedName("appId")
    val appId: String,
)

/**
 * 白板uuid和token
 */
data class WhiteboardTokenBean(
    @SerializedName("roomToken")
    val roomToken: String,
    @SerializedName("roomUuid")
    val roomUuid: String,
)


/**
 * oss info
 */
data class OssBean(
    @SerializedName("accessKeyId")
    var accessKeyId: String,
    @SerializedName("accessKeySecret")
    var accessKeySecret: String,
    @SerializedName("bucketName")
    var bucketName: String,
    @SerializedName("domain")
    var domain: String,
    @SerializedName("endPoint")
    var endPoint: String,
    @SerializedName("expiration")
    var expiration: String,
    @SerializedName("securityToken")
    var securityToken: String,
) : Serializable

data class OssParams(
    @SerializedName("id")
    var id: Long,
    @SerializedName("msg")
    val msg: String,
    @SerializedName("uploadFileName")
    val uploadFileName: String,
    @SerializedName("filePath")
    val filePath: String,
) : Serializable


//手写笔记请求数据
data class WritePageReq(
    var pageserial: String,
    var picture_url: String,
)

//手写笔记列表bean
data class NoteListBean(
    var pageserial: String,
    var picture_url: String,
    var pageNumber: Int,//页码
    var bookNoteId : Int,
    var bookAddIndex:Int //book添加顺序
)


data class UserInfoBean(
    @SerializedName("id")
    val id: Int,
    @SerializedName("name")
    val name: String,
    @SerializedName("mobile")
    var mobile: String,
    @SerializedName("avatarUrl")
    var avatarUrl: String?,
    @SerializedName("sectionId")
    var sectionId:Int?,
    @SerializedName("section")
    var section: String,
    @SerializedName("subjectId")
    var subjectId:Int?,
    @SerializedName("subject")
    var subject: String,
    @SerializedName("school")
    val school: String
):Serializable


/**
 * 学段信息
 */
data class SectionBean(
    @SerializedName("id")
    val id: Int,
    @SerializedName("name")
    val name: String,
):Serializable

/**
 * 学科信息
 */
data class SubjectBean(
    @SerializedName("id")
    val id: Int,
    @SerializedName("name")
    val name: String,
):Serializable

/**
 * 用户数据类
 */
//data class UserInfoBean(
//    @SerializedName("birthDay")
//    var birthDay: String?, //出生日期
//    @SerializedName("educationCode")
//    var educationCode: String, //学历code
//    @SerializedName("educationList")
//    val educationList: List<CodeNameItem>, //系统学历集合
//    @SerializedName("educationName")
//    var educationName: String, //学历name
//    @SerializedName("entryYear")
//    var entryYear: Int?, //入职年份
//    @SerializedName("gender")
//    var gender: String, //性别,可用值:MALE,FEMALE
//    @SerializedName("id")
//    val id: Int, //用户编号
//    @SerializedName("loginName")
//    val loginName: String, //账号
//    @SerializedName("myPhaseList")
//    var myPhaseList: List<IdNameItem>, //	用户学段集合
//    @SerializedName("mySubjectList")
//    var mySubjectList: List<SubjectBean>, // 用户学科集合
//    @SerializedName("name")
//    val name: String, //姓名
//    @SerializedName("phone")
//    var phone: String, //手机号
//    @SerializedName("professionalTitleCode")
//    var professionalTitleCode: String, //	职称code
//    @SerializedName("professionalTitleList")
//    val professionalTitleList: List<CodeNameItem>, //系统职称集合
//    @SerializedName("professionalTitleName")
//    var professionalTitleName: String, //	职称name
//    @SerializedName("schoolPhaseList")
//    val schoolPhaseList: List<IdNameItem>, //	学校学段集合
//    @SerializedName("schoolSubjectList")
//    val schoolSubjectList: List<IdNameItem>, //学校学科集合
//    @SerializedName("tenantId")
//    val tenantId: String, //	租户编号
//    @SerializedName("tenantName")
//    val tenantName: String, //租户(学校)名称
//) {
//    data class SubjectBean(
//        @SerializedName("schoolPhaseId")
//        val schoolPhaseId: Int,
//        @SerializedName("schoolPhaseName")
//        val schoolPhaseName: String,
//        @SerializedName("subjectId")
//        val subjectId: Int,
//        @SerializedName("subjectName")
//        val subjectName: String,
//        @SerializedName("userId")
//        val userId: Int
//    ) : Serializable
//}

/**
 * 获取教师绑定蓝牙笔
 */
data class TeacherPenBean(
    @SerializedName("id")
    val id: Int,
    @SerializedName("penMac")
    val penMac: String?, //蓝牙笔mac地址
    @SerializedName("teacherId")
    val teacherId: Int,//老师ID
    @SerializedName("createTime")
    val createTime: String?, //老师笔初次使用时间
    @SerializedName("updateTime")
    val updateTime: String?, //老师笔最新使用时间
    @SerializedName("isBind")
    val isBind: Int,//0 默认值 1 绑定的笔
) {}

/**
 * 我的记录列表
 */
data class MyActivityFillRecordBean(
    @SerializedName("activityFillRecords")
    val activityFillRecords: List<ActivityFillRecordsBean>, //记录列表
    @SerializedName("growthRecordFillRecordCounts")
    val growthRecordFillRecordCounts: MutableList<GrowthRecordFillRecordCountsBean>, //成长记录实绩及次数
) : Serializable {}

/**
 * 我的记录列表---行
 */
data class GrowthRecordFillRecordCountsBean(
    @SerializedName("count")
    val count: Int, //次数
    @SerializedName("oneLevelActivityId")
    val oneLevelActivityId: Int, //实绩ID
    @SerializedName("oneLevelActivityActivityName")
    val oneLevelActivityActivityName: String,//实绩名称
) : Serializable {}

/**
 * 我的记录列表---列
 */
data class ActivityFillRecordsBean(
    @SerializedName("activityName")
    val activityName: String, //实绩名称
    @SerializedName("fillRecordId")
    val fillRecordId: Int, //提报记录id
    @SerializedName("fillTime")
    val fillTime: String,//提报时间
    @SerializedName("status")
    val status: Int, //	状态：1待抽检(自动评定)，2通过，3修正，4驳回
    @SerializedName("title")
    val title: String, //	标题
) : Serializable {}

/**
 * 提报详情查询
 */
data class FillRecordDetailBean(
    @SerializedName("activityName")
    val activityName: String, //实绩名称
    @SerializedName("fillTime")
    val fillTime: String,//提报时间
    @SerializedName("operatorTime")
    val operatorTime: String,//提报时间
    @SerializedName("status")
    val status: Int, //	状态：1待抽检(自动评定)，2通过，3修正，4驳回
    @SerializedName("title")
    val title: String, //	标题
    @SerializedName("profile")
    val profile: String, //	简介
    @SerializedName("tangibleScore")
    val tangibleScore: Int, //	实绩分数
    @SerializedName("fileStrings")
    val fileStrings: List<FileStringsBean>, //	文件列表
    @SerializedName("fillRecordAbilityScores")
    val fillRecordAbilityScores: List<AbilityScoresBean> //能力分值
)  : Serializable{
    data class FileStringsBean(
        @SerializedName("first")
        val first: String,//提报时间
        @SerializedName("second")
        val second: Int,
    ) : Serializable {

    }

    data class AbilityScoresBean(
        @SerializedName("abilityName")
        val abilityName: String,//能力名称
        @SerializedName("abilityScore")
        val abilityScore: Int, //能力分数
        @SerializedName("isMoreCount")
        val isMoreCount: Boolean, //是否超过上限次数
        @SerializedName("oldAbilityScore")
        val oldAbilityScore: Int, //	更改前能力分数
        @SerializedName("studyYearActivityAbilityId")
        val studyYearActivityAbilityId: Int, //	学年采集项能力Id

    ):Serializable{

    }
}

/**
 * 我的教研笔记
 */
data class PageBybookNoteBean(
    @SerializedName("pages")
    val pages: Int,
    @SerializedName("current")
    val current: Int,
    @SerializedName("size")
    val size: Int,
    @SerializedName("total")
    val total: Int,
    @SerializedName("records")
    val records: MutableList<BookNoteBean>, //	笔记
) : Serializable {
}

data class BookNoteBean(
    @SerializedName("id")
    val id: Int,
    @SerializedName("name")
    val name: String,
    @SerializedName("coverUrl")
    val coverUrl: String,
    @SerializedName("pageNum")
    val pageNum: Int,
    @SerializedName("lastWritePageNum")
    var lastPage: Int,
    @SerializedName("allowWrite")
    val allowWrite: Int,
    @SerializedName("gridPictureList")
    val gridPictureList: List<GridPictureBean>
    ):Serializable{

}

/*
* 版本信息
* */
data class VersionInfoBean(
    @SerializedName("id")
    val id: Int,
    @SerializedName("version")
    val version: String,
    @SerializedName("dowloadUrl")
    val dowloadUrl: String,
    @SerializedName("description")
    val description: String,
    @SerializedName("status")
    var status: Int,
    @SerializedName("type")
    val type: Int,
    @SerializedName("createTime")
    val createTime: String,
    @SerializedName("updateTime")
    val updateTime: String,
    @SerializedName("apkSize")
    val apkSize: Int,
    @SerializedName("isDeleted")
    val isDeleted: Int,
):Serializable{

}



/**
 * 检查教师连接的mac 并返回上次连接地址
 */
data class CheckTeacherMacBean(
    @SerializedName("penMac")
    val penMac: String,//当前提交的mac
    @SerializedName("lastPenMac")
    val lastPenMac: String,//该教师上次使用的蓝牙mac
    @SerializedName("lastPenTeacherName")
    val lastPenTeacherName: String,//上次使用该笔的教师
    @SerializedName("bindByOther")
    val bindByOther: Boolean,//是否被其他老师绑定
) : Serializable {
}

/**
 *获取笔记本单页信息
 */
data class GridPictureBean(
    @SerializedName("id")
    val id: Int,
    @SerializedName("pageserial")
    val pageserial: String,//云蝶的序列号
    @SerializedName("pageNumber")
    val pageNumber: Int,//图片页码
    @SerializedName("pictureName")
    val pictureName: String,//图片名称
    @SerializedName("pictureUrl")
    val pictureUrl: String,//图片上传后的url
    @SerializedName("width")
    val width: Int,//
    @SerializedName("height")
    val height: Int,
    @SerializedName("bookId")
    val bookId: Int,
    ) : Serializable


/**
 * 获取实绩树对象
 */
data class ActivityTreeListBean(
    @SerializedName("id")
    val id: Int,
    @SerializedName("isRecord")
    val isRecord: Int, //	是否统计记录 1是 0不是 只有是统计记录 才能设置分值
    @SerializedName("name")
    val name: String,
    @SerializedName("parentId")
    val parentId: Int,
    @SerializedName("type")
    val type: Int,
    @SerializedName("yearActivityId")
    val yearActivityId: Int,
    @SerializedName("childList")
    val childList: List<ActivityTreeListBean>?,
) : Serializable {
    /*data class ActivityTreeChildBean(
        @SerializedName("id")
        val id: Int,
        @SerializedName("name")
        val name: String,
        @SerializedName("parentId")
        val parentId: Int,
        @SerializedName("childList")
        val childList: List<ActivityTreeChildBean>,
    ):Serializable{}*/
}

/**
 * 查询暂存实绩
 */
data class QueryCreateTeacherFillRecordDTOBean(
    @SerializedName("profile")
    val profile: String,
    @SerializedName("studyYearActivityId")
    val studyYearActivityId: Int,
    @SerializedName("submitMethod")
    val submitMethod: Int,
    @SerializedName("title")
    val title: String,
    @SerializedName("fileAddress")
    val fileAddress: List<String>,
) : Serializable {
}






/****************请求bean*******************/

/**
 * 教研活动笔记请求参数
 */
data class ResearchUploadReq(
    var activityId: String,
    var pics: List<String>,
    var way: String,
    var writePage: List<WritePageReq>,
)

/**
 * 微信分享
 */
data class SharePdfReq(
    var pics: List<String>
)

/**
 * numInfo.json
 * 教研tab请求
 */
data class NumInfoReq(
    var teacherId:String,
    var tenantId:String,
    var regionId:String,
    var stageIds:List<Int>,
    var subjectIds:List<Int>,
)

data class QueryActivity(
    var tabKey:String,
    var teacherId:String,
    var tenantId:String,
    var regionId:String,
    var pageNo:String,
    var stageIds:List<Int>,
    var subjectIds:List<Int>,
)